#include "GatherDataHandlerMemory.h"
#include "stdio.h"

/*
	1.如果温度检测连续10次都不正常 （可能故障） 让心跳任务里面的led停止闪烁
*/
u8 times=0;
extern int heartState;
TargetGatherData targetData;

u8 clearData(const GatherData* source){
    if (source->temp>200)
    {
        times++;
        if (times>8)
        {
            heartState=0;//让设备停止闪烁
            return;
        }
        return 1;//return 1 代表错误退出
    }else{
        //设备正常
        heartState = 1;//让设备正常闪烁
        times=0;//将累计的次数清零
        return 0;//return 0 代表正常退出 
    }
    
}

//对数据进行加工处理
void processData(const GatherData* source){
    targetData.humi=source->humi;
    targetData.raidrop=source->raidrop;
    targetData.smoke=source->smoke/40;
    targetData.sunshine=100-(source->smoke/40);
    targetData.temp=source->temp;
}


/*
	对采集的原始数据进行加工处理
	数据清洗：对数据检查，校验，清洗错误数据
*/


void dataHandler(GatherData* source){
    //1.非空判断
    if(source==NULL){
        printf("gather task error \r\n");
		return;
    }
    //2.数据清洗
    u8 res = clearData(source);
    //采集的数据如果不正常 就不继续往下工作
    if(res) 
    return;
    //3.如果心跳状态不正常 也不需要向下执行
    if(heartState==0)
    return;
    //4.对数据进行加工处理
    processData(source);
    
}